class AdministradorFunctionalTests extends functionaltestplugin.FunctionalTestCase {
    
	private String createAdministrador = "http://localhost:9090/SPL_V3/administrador/create"
	private String searchAdministrador = "http://localhost:9090/SPL_V3/administrador/search"
	private String listAdministrador = "http://localhost:9090/SPL_V3/administrador/list"
	
	
	void testeCriarAdministrador() {
        get(this.createAdministrador)
		assertStatus 200
		
		form {
			username = "chefia"
			passwd = "123456"
			email = "chefia@gmail.com"
			telefone = "33332345"
			userRealName = "Lilian"
			tipo = "Suporte"
			click "Criar"
		}
		assertContentContains("Usuario criado com sucesso.")
		
    }
	
		void testeCriarAdministradorCadastrado() {
        get(this.createAdministrador)
		assertStatus 200
		
		form {
			username = "chefia"
			passwd = "123456"
			email = "chefia@gmail.com"
			telefone = "33332345"
			userRealName = "Lilian"
			tipo = "Suporte"
			click "Criar"
		}
		assertContentContains("Esse login ja esta registrado.")
		
    }
	
	void testeConsultaAdministrador (){
		get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lili"
			click "Consultar"
		}
                click "Ver mais"
                assertTitleContains "Show"
	
	}
	
	 void testeCriarUsuarioSemSenha() {
        get(this.createAdministrador)
		assertStatus 200
		
		form {
			username = "especial"
			passwd = ""
			email = "chefia@gmail.com"
			telefone = "33332345"
			userRealName = "Lilian"
			tipo = "Suporte"
			click "Criar"
		}
		assertContentContains("Senha nao pode ser vazio.")
		
    }
	
	void testeCriarUsuarioSemLogin() {
        get(this.createAdministrador)
		assertStatus 200
		
		form {
			username = ""
			passwd = "clientegold"
			email = "chefia@gmail.com"
			telefone = "33332345"
			userRealName = "Lilian"
			tipo = "Suporte"
			click "Criar"
		}
		assertContentContains("Login nao pode ser vazio.")
		
    }
	
	void testeCriarUsuarioSemEmail() {
        get(this.createAdministrador)
		assertStatus 200
		
		form {
			username = "clientegold"
			passwd = "clientegold"
			email = ""
			telefone = "33332345"
			userRealName = "Lilian"
			tipo = "Suporte"
			click "Criar"
		}
		assertContentContains("Email nao pode ser vazio.")
		
    }
	
		void testeCriarUsuarioSemArroba() {
        get(this.createAdministrador)
		assertStatus 200
		form {
			username = "clientegold"
			passwd = "clientegold"
			email = "semarroba"
			telefone = "33332345"
			userRealName = "Lilian"
			tipo = "Suporte"
			click "Criar"
		}
		assertContentContains("Formatacao de email invalida.")
		
    }
	
		void testeCriarUsuarioTelefoneGrande() {
        get(this.createAdministrador)
		assertStatus 200
		form {
			username = "qualquer"
			passwd = "clientegoldasd"
			email = "sema@mgial.com"
			telefone = "33333435472343657264594632345"
			userRealName = "Outro"
			click "Criar"
		}
		assertContentContains("")
		
    }
	
		void testeCriarUsuarioLoginGrande() {
        get(this.createAdministrador)
		assertStatus 200
		form {
			username = "clientegoldasdclientegoldasdclientegoldasdclientegoldasdclientegoldasdclientegoldasd"
			passwd = "clientegoldasd"
			email = "semda@mgial.com"
			telefone = "33333"
			userRealName = "Outro"
			click "Criar"
		}
		
		assertContentContains("")
		
    }
	
	
	void testeCriarUsuarioSemNome() {
        get(this.createAdministrador)
		assertStatus 200
		
		form {
			username = "clientegold"
			passwd = "clientegold"
			email = "semarroba"
			telefone = "33332345"
			userRealName = ""
			tipo = "Suporte"
			click "Criar"
		}
		assertContentContains("Nome nao pode ser vazio.")
		
    }
	
	void testeShowAdministrador() {
        get(this.listAdministrador)
                redirectEnabled = false
                assertStatus 200
                click "Ver mais"
                assertTitleContains "Show"
                /*
		form {
			username = "chefia"
			passwd = "123456"
			email = "chefia@gmail.com"
			telefone = "33332345"
			userRealName = "Lilian"
			tipo = "Suporte"
			click "Atualizar"
		}*/
		//assertContentContains("Dados de Usuario atualizado com sucesso.")
		
    }

        void testeEditarAdministrador(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lilian"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        login = "chefia"
			senha = "1234567"
			email = "chefia@gmail.com"
			telefone = "33332345"
			nome = "Lilian"
			tipo = "Suporte"
			click "Atualizar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
                assertContentContains("Dados de Usuario atualizado com sucesso.")
        }


 void testeEditarAdministradorSemSenha(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lilian"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        login = "especial"
			senha = ""
			email = "chefia@gmail.com"
			telefone = "33332345"
			nome = "Lilian"
			tipo = "Suporte"
			click "Atualizar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
                assertContentContains("Senha nao pode ser vazio.")
        }

    void testeEditarAdministradorSemLogin(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lilian"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        login = ""
			senha = "clientegold"
			email = "chefia@gmail.com"
			telefone = "33332345"
			nome = "Lilian"
			tipo = "Suporte"
			click "Atualizar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
                assertContentContains("Login nao pode ser vazio.")
        }    
	    void testeEditarAdministradorSemEmail(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lilian"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        login = "chefia"
			senha = "clientegold"
			email = ""
			telefone = "33332345"
			nome = "Lilian"
			tipo = "Suporte"
			click "Atualizar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
		assertContentContains("Email nao pode ser vazio.")
		
    }
	
	    void testeEditarAdministradorSemArroba(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lilian"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        login = ""
			senha = "clientegold"
			email = "chefia"
			telefone = "33332345"
			nome = "Lilian"
			tipo = "Suporte"
			click "Atualizar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
		assertContentContains("Formatacao de email invalida.")
		
    }
	
	    void testeEditarAdministradorSemNome(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lilian"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        login = "chefia"
			senha = "clientegold"
			email = "chefia@gmail.com"
			telefone = "33332345"
			nome = ""
			tipo = "Suporte"
			click "Atualizar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
		assertContentContains("Nome nao pode ser vazio.")
		
    }
       void testeRemoverAdministrador(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Lilian"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Remover"
                }
                assertRedirectUrlContains "list"
                followRedirect()
                assertContentContains("deleted.")
        }

    void testeConsultarUsuarioAvançado(){
        get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
                form{
                    click "Consulta Avancada para Usuario"
                }
                assertRedirectUrlContains "search_usuario"
                followRedirect()
                click "Consultar"
                assertRedirectUrlContains "results_usuario"
    }

    void testeConsultarAdministradorAvançado(){
        get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
                form{
                    click "Consulta Avancada para Administrador"
                }
                assertRedirectUrlContains "search_admin"
                followRedirect()
                click "Consultar"
                assertRedirectUrlContains "results_admin"
    }
}
